\documentclass{fdudoc}

\usepackage{zhlineskip}
\usepackage{enumitem}
\setlist{nosep}

\usepackage{multirow}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\newcolumntype{R}{>{\raggedleftarraybackslash}X}
\ProvideDocumentCommand{\tabularxcolumn}{m}{m{#1}}

\geometry{left=4cm}

\title{\cls{whu-thesis}\bfseries ：武汉大学毕业论文模板\thanks{\url{https://github.com/whutug/whu-thesis}}}
\author{WHUTUG\thanks{\url{https://github.com/whutug}}}
\date{2021/03/21 \quad v0.6a}

\begin{document}
\maketitle
\tableofcontents

\section{概述}
\cls{whu-thesis}（\textbf{W}u\textbf{h}an \textbf{U}niversity \LaTeX{} \textbf{Thesis} Template）是为了帮助武汉大学毕业生撰写毕业论文（设计）而编写的 \LaTeX{} 模板，内部使用 \LaTeX3 语言，以适应 \TeX{} 技术发展潮流。

模板根据《武汉大学本科生毕业论文（设计）书写印制规范》编写，力求合规，简洁，易于实现，用户友好。

与 MS Word 等所见即所得编辑工具不同，使用 \LaTeX{} 工具排版可以将写作与排版过程分离，写作者只需要关心文字的部分，而剩下的排版工作全部交给工具自动完成。

模板的作用在于减少论文写作过程中格式调整的时间。前提是遵守模板的用法，否则即便用了 \cls{whu-thesis} 也难以保证输出的论文符合学校规范。

用户如果遇到 bug，或者发现与学校《印制规范》的要求不一致，可以尝试以下办法：
\begin{enumerate}
    \item 阅读学校的\href{https://github.com/mtobeiyf/whu-thesis/files/4638713/default.pdf}{书写印制规范文件}，判断是否符合要求；
    \item 前往项目 \href{https://github.com/mtobeiyf/whu-thesis/wiki}{wiki} 查看相关说明；
    \item 将 \TeX{} 发行版和宏包升级到最新，并且将模板升级到 Github 上最新版本，查看问题是否已经修复；
    \item 在 \href{https://github.com/mtobeiyf/whu-thesis/issues}{GitHub Issues 页面}中搜索该问题的关键词；
    \item 提出新的 \href{https://github.com/mtobeiyf/whu-thesis/issues}{issue}，并说明系统、发行版与版本、出现的问题等关键信息。
\end{enumerate}

\subsection*{关于本手册}
本手册假定用户已经能处理一般的 \LaTeX{} 文档，并对 \BibTeX{} 有一定了解。如果从未接触过 \TeX{} 和 \LaTeX{}，建议先学习相关的基础知识。

本文采用不同字体表示不同内容。无衬线字体表示宏包名称，如 \pkg{xeCJK} 宏包、\cls{ctexbook} 文档类等；等宽字体表示代码或文件名，如 \cs{whusetup} 命令、\env{abstract} 环境、\TeX{} 文档 \file{thesis.tex} 等；带有尖括号的楷体（或西文斜体）表示命令参数，如 \meta{模板选项}、\meta{English title} 等。在使用时，参数两侧的尖括号不必输入。示例代码进行了语法高亮处理，以方便阅读。

在用户手册中，带有蓝色侧边线的为 \LaTeX{} 代码，而带有粉色侧边线的则为命令行代码，请注意区分。模板提供的选项、命令、环境等，均用横线框起，同时给出使用语法和相关说明。

本手册基于 \href{https://github.com/stone-zeng/fduthesis}{\cls{fduthesis}}\scite{fduthesis} 所附带的 \cls{fdudoc} 文档类编写，只进行了字体设置的改动，在此向 \cls{fduthesis} 的作者\href{https://github.com/stone-zeng}{曾祥东}先生表示感谢。

\section{使用说明}

\subsection{基本用法}

以下是一份简单的 \TeX{} 文档，它演示了 \cls{whu-thesis} 的最基本用法：
\begin{latexexample}[deletetexcs={\documentclass},
        moretexcs={\chapter},morekeywords={\documentclass},
        emph={[2]document}]
    % thesis.tex
    \documentclass{whu-thesis}
    \begin{document}
    \chapter{欢迎}
    \section{Welcome to whu-thesis!}
    你好，\LaTeX{}！
    \end{document}
\end{latexexample}

按照 \ref{subsec:编译方式} 小节中的方式编译该文档，您应当得到一篇 9 页的文章。当然，这篇文章的绝大部分都是空白的。

\subsection{编译方式} \label{subsec:编译方式}
本模板只支持 \XeLaTeX{} 或 \LuaLaTeX{} 引擎，其他编译方式会直接报错。为了生成正确的目录、脚注以及交叉引用，您至少需要连续编译两次。

以下代码中，假设您的 \TeX{} 源文件名为 \file{thesis.tex}。使用 \XeLaTeX{} 与 \BibTeX{} 编译论文，请在命令行中执行
\begin{shellexample}[morekeywords={xelatex,bibtex}]
    xelatex thesis
    bibtex  thesis
    xelatex thesis
    xelatex thesis
\end{shellexample}
或使用 \pkg{latexmk}
\begin{shellexample}[morekeywords={latexmk},emph={-xelatex}]
    latexmk -xelatex thesis
\end{shellexample}

若使用 \LuaLaTeX{} 与 biber 编译论文，请在命令行中执行
\begin{shellexample}[morekeywords={lualatex,bibtex}]
    lualatex thesis
    biber    thesis
    lualatex thesis
    lualatex thesis
\end{shellexample}
或者
\begin{shellexample}[morekeywords={latexmk},emph={-lualatex}]
    latexmk -lualatex thesis
\end{shellexample}

在特殊情况下（如 \kvopt{type}{doctor} 时），可能需要在编译时加入 \opt{-shell-escape} 选项，如
\begin{shellexample}[morekeywords={latexmk},emph={-xelatex,-shell-escape}]
    latexmk -xelatex -shell-escape thesis
\end{shellexample}

\subsection{模板选项}
所谓“模板选项”，指需要在引入文档类的时候指定的选项：
\begin{latexexample}[deletetexcs={\documentclass},
        morekeywords={\documentclass}]
    \documentclass(*\oarg{模板选项}*){whu-thesis}
\end{latexexample}

以下选项中，默认选项以\textbf{粗体}表示。有些模板选项为布尔型，它们只能在 \opt{true} 和 \opt{false} 中取值。对于这些选项，\kvopt{\meta{选项}}{true} 中的“\kvopt{}{true}”可以省略。

\begin{function}{type}
    \begin{fdusyntax}[emph={[1]type}]
        type = (*<(doctor)|master|bachelor|opening>*)
    \end{fdusyntax}
    选择学位类型。四种选项分别代表博士学位论文、硕士学位论文、本科毕业论文与本科开题报告。
\end{function}

\kvopt{type}{opening} 时，\cls{whu-thesis} 会加载 \pkg{ctexart} 文档类，其他时候 \cls{whu-thesis} 则会加载 \cls{ctexbook} 文档类。\kvopt{type}{master} 时，由于需要编译书脊，请在编译时加入 \opt{-shell-escape} 选项，这时会在外部编译书脊，书脊使用 \LuaTeX-ja 的竖排文档类 \cls{ltjtarticle}。

\begin{function}{class}
    \begin{fdusyntax}[emph={[1]class}]
        class = (*<(academic)|professional>*)
        class = (*<(paper)|design>*)
    \end{fdusyntax}
    选择论文类型。上二选项表示 \kvopt{type}{master} 时的学术硕士与专业硕士，影响论文封面设计。下二选项表示 \kvopt{type}{bachelor} 时的毕业论文与毕业设计，这一要求在《印制规范》中并未体现，只影响论文标题上方显示为“武汉大学本科毕业论文”还是“武汉大学本科毕业设计”。
\end{function}

\begin{function}{draft}
    \begin{fdusyntax}[emph={[1]draft}]
        draft = (*<\TFF>*)
    \end{fdusyntax}
    选择是否开启草稿模式，默认关闭。
\end{function}

草稿模式为全局选项，会影响到很多宏包的工作方式。开启之后，主要的变化有：
\begin{itemize}
    \item 把行溢出的盒子显示为黑色方块；
    \item 不实际插入图片，只输出一个占位方框；
    \item 关闭超链接渲染，也不再生成 PDF 书签；
    \item 显示页面边框，使用 \LuaLaTeX{} 编译时，还会加载 \pkg{lua-visual-debug} 宏包。
\end{itemize}

\begin{function}{oneside,twoside}
    指明论文的单双面模式，受 \opt{type} 选项，即加载的文档类影响。论文默认为 \opt{twoside}，开题报告与书脊默认为 \opt{oneside}。该选项会影响每章的开始位置。开题报告与书脊没有章一级，因此不受该选项限制。本科论文单双面打印均可，硕博论文要求双面打印。
\end{function}

在双面模式（\opt{twoside}）下，按照通常的排版惯例，每章应只从奇数页（在右）开始；而在单页模式（\opt{oneside}）下，则可以从任意页面开始。

\begin{function}{punct}
    \begin{fdusyntax}[emph={[1]punct}]
        punct = (*<(quanjiao)|banjiao|kaiming>*)
    \end{fdusyntax}
    选择标点样式。三个选项分别为“全角”“半角”“开明”式标点。此选项来自于 \pkg{ctex} 宏包，具体可以查看 \pkg{ctex} 宏包文档获得详细说明。
\end{function}

\subsection{参数设置}
\begin{function}{\whusetup}
    \begin{fdusyntax}[morekeywords={\whusetup}]
        \whusetup(*\marg{键值列表}*)
    \end{fdusyntax}
    本模板提供了一系列选项，可由您自行配置。载入文档类之后，以下所有选项均可通过统一的命令 \cs{whusetup} 来设置。
\end{function}

\cs{whusetup} 的参数是一组由（英文）逗号隔开的选项列表，列表中的选项通常是 \kvopt{\meta{key}}{\meta{value}} 的形式。部分选项的 \meta{value} 可以省略。对于同一项，后面的设置将会覆盖前面的设置。同样，在下文的说明中，将用\textbf{粗体}表示默认值。

\cs{whusetup} 采用 \LaTeX3 风格的键值设置，支持不同类型以及多种层次的选项设定。键值列表中，“"="”左右的空格不影响设置；但需注意，参数列表中不可以出现空行。

与模板选项相同，布尔型的参数可以省略 \kvopt{\meta{选项}}{true}中的“\kvopt{}{true}”。

另有一些选项包含子选项，它们可以按如下两种等价方式来设定：
\begin{latexexample}[morekeywords={\whusetup},
        emph={[1]option-a,sub-option-a,option-b,sub-option-b}]
    \whusetup{
        option-a = {
                sub-option-a = value-a
            },
        option-b = {
                sub-option-b = value-b
            }
    }
\end{latexexample}
或者
\begin{latexexample}[morekeywords={\whusetup},
        emph={[1]option-a,sub-option-a,option-b,sub-option-b}]
    \whusetup{
        option-a/sub-option-a = value-a,
        option-b/sub-option-b = value-b
    }
\end{latexexample}

注意 “"/"” 的前后均不可以出现空白字符。

\subsubsection{信息录入}
\begin{function}{info}
    \begin{fdusyntax}[emph={[1]info}]
        info = (*\marg{键值列表}*)
        info/(*\meta{key}*) = (*\meta{value}*)
    \end{fdusyntax}
    该选项包含许多子项目，用于录入论文信息。具体内容见下。以下带“"*"”的项目表示对应的英文字段。
\end{function}

\begin{function}{info/title,info/title*}
    \begin{fdusyntax}[emph={[1]title,title*}]
        title  = (*\marg{中文标题}*)
        title* = (*\marg{英文标题}*)
    \end{fdusyntax}
    论文标题。默认会自动断行，但为了语义的连贯以及排版的美观，如果您的标题长于一行，建议使用“"\\"”手动断行。
\end{function}

\begin{function}{info/author,info/author*}
    \begin{fdusyntax}[emph={[1]author,author*}]
        author  = (*\marg{中文姓名}*)
        author* = (*\marg{英文姓名}*)
    \end{fdusyntax}
    作者姓名。
\end{function}

\begin{function}{info/clc}
    \begin{fdusyntax}[emph={[1]clc}]
        clc = (*\marg{分类号}*)
    \end{fdusyntax}
    《中国图书资料分类法》（CLC）分类号。
\end{function}

\begin{function}{info/udc}
    \begin{fdusyntax}[emph={[1]udc}]
        udc = (*\marg{分类号}*)
    \end{fdusyntax}
    《通用十进制分类法》（UDC）分类号。
\end{function}

\begin{function}{info/secrete-level}
    \begin{fdusyntax}[emph={[1]secrete-level}]
        secrete-level = (*\marg{密级}*)
    \end{fdusyntax}
    论文密级，公开型论文可不注明。
\end{function}

\begin{function}{info/school-number}
    \begin{fdusyntax}[emph={[1]school-number}]
        school-number = (*\marg{数字}*)
    \end{fdusyntax}
    学校代码，默认 10486。
\end{function}

\begin{function}{info/student-number}
    \begin{fdusyntax}[emph={[1]student-number}]
        student-number = (*\marg{数字}*)
    \end{fdusyntax}
    作者学号，共 18 位。
\end{function}

\begin{function}{info/school}
    \begin{fdusyntax}[emph={[1]school}]
        school = (*\marg{名称}*)
    \end{fdusyntax}
    院（系）名称。
\end{function}

\begin{function}{info/subject}
    \begin{fdusyntax}[emph={[1]subject}]
        subject = (*\marg{学科}*)
    \end{fdusyntax}
    学科名称。
\end{function}

\begin{function}{info/major}
    \begin{fdusyntax}[emph={[1]major}]
        major = (*\marg{名称}*)
    \end{fdusyntax}
    专业名称。
\end{function}

\begin{function}{info/direction}
    \begin{fdusyntax}[emph={[1]direction}]
        direction = (*\marg{方向}*)
    \end{fdusyntax}
    研究方向。
\end{function}

\begin{function}{info/advisor}
    \begin{fdusyntax}[emph={[1]advisor}]
        advisor = (*\marg{姓名 , 职称}*)
    \end{fdusyntax}
    指导教师姓名与职称。
\end{function}

\begin{function}{info/date}
    \begin{fdusyntax}[emph={[1]date}]
        date = (*\marg{年数字/月数字}*)
    \end{fdusyntax}
    论文完成日期。默认为文档编译时的年月。
\end{function}

\begin{function}{info/keywords,info/keywords*}
    \begin{fdusyntax}[emph={[1]keywords,keywords*}]
        keywords  = (*\marg{中文关键词}*)
        keywords* = (*\marg{英文关键词}*)
    \end{fdusyntax}
    关键词列表。各关键字之间需使用英文逗号隔开。为防止歧义，可以用分组括号“"{...}"”把各字段括起来。
\end{function}

\subsubsection{文档结构}
\begin{function}{element}
    \begin{fdusyntax}[emph={[1]element}]
        element = (*\marg{键值列表}*)
        element/(*\meta{key}*) = (*\meta{value}*)
    \end{fdusyntax}
    该选项包含许多子项目，用于包含论文的组成部分。具体内容见下，文件名可不包含后缀名。同样，带“"*"”的项目表示对应的英文字段。
\end{function}

\begin{function}{element/innovation}
    \begin{fdusyntax}[emph={[1]innovation}]
        innovation = (*\marg{文件}*)
    \end{fdusyntax}
    博士生自认为的论文创新点。
\end{function}

\begin{function}{element/abstract,element/abstract*}
    \begin{fdusyntax}[emph={[1]abstract,abstract*}]
        abstract  = (*\marg{文件}*)
        abstract* = (*\marg{文件}*)
    \end{fdusyntax}
    中文摘要与英文摘要。
\end{function}

\begin{function}{element/bibliography}
    \begin{fdusyntax}[emph={[1]bibliography}]
        bibliography = (*\marg{文件}*)
    \end{fdusyntax}
    参考文献数据源。可以是单个文件，也可以是用英文逗号隔开的一组文件。如果选定了 \kvopt{bib-backend}{biblatex}，数据源必须明确给出\ .bib 后缀名。
\end{function}

\begin{function}{element/achievements}
    \begin{fdusyntax}[emph={[1]achievements}]
        achievements = (*\marg{文件}*)
    \end{fdusyntax}
    攻博期间发表的科研成果目录。文件内使用 \cs{item} 列举，列表样式受 \opt{style/bib-style} 控制。
\end{function}

\begin{function}{element/thanks}
    \begin{fdusyntax}[emph={[1]thanks}]
        thanks = (*\marg{文件}*)
    \end{fdusyntax}
    致谢。
\end{function}

\begin{function}{element/appendix}
    \begin{fdusyntax}[emph={[1]appendix}]
        appendix = (*\marg{文件}*)
    \end{fdusyntax}
    附录。可以是单个文件，也可以是用英文逗号隔开的一组文件。
\end{function}

\subsubsection{论文样式}
\begin{function}{style}
    \begin{fdusyntax}[emph={[1]style}]
        style = (*\marg{键值列表}*)
        style/(*\meta{key}*) = (*\meta{value}*)
    \end{fdusyntax}
    该选项包含许多子项目，用于设置论文格式。具体内容见下。
\end{function}

\begin{function}{style/font}
    \begin{fdusyntax}[emph={[1]font}]
        font = times|xits|termes|newtx
    \end{fdusyntax}
    西文字体设置，具体见表 \ref{tab:font}。
\end{function}

\begin{table}[!ht]
    \begin{threeparttable}
        \caption{\opt{style/font} 各选项字体配置}
        \label{tab:font}
        \begin{tabularx}{\textwidth}{CC}
            \toprule
            \opt{times}  & Times New Roman      \\
            \midrule
            \opt{xits}   & XITS                 \\
            \midrule
            \opt{termes} & TeX Gyre Termes      \\
            \midrule
            \opt{newtx}  & \pkg{newtxtext} 宏包 \\
            \bottomrule
        \end{tabularx}
    \end{threeparttable}
\end{table}

\begin{function}{style/math-font}
    \begin{fdusyntax}[emph={[1]math-font}]
        math-font = (*<(xits)|termes|newtx>*)
    \end{fdusyntax}
    数学字体设置，具体见表 \ref{tab:math-font}。
\end{function}

\begin{table}[!ht]
    \begin{threeparttable}
        \caption{\opt{style/math-font} 各选项字体配置}
        \label{tab:math-font}
        \begin{tabularx}{\textwidth}{CCC}
            \toprule
            \opt{xits} & \opt{termes}         & \opt{newtx}          \\
            \midrule
            XITS Math  & TeX Gyre Termes Math & \pkg{newtxmath} 宏包 \\
            \bottomrule
        \end{tabularx}
    \end{threeparttable}
\end{table}

\emph{注意：\pkg{newtx} 作为传统的 Type-1 格式字体，与 OpenType 字体混用可能导致各种问题，故 \kvopt{font}{newtx} 必须与 \kvopt{math-font}{newtx} 搭配使用。该选项还处于测试阶段，使用时请谨慎。}

\begin{function}{style/cjk-font}
    \begin{fdusyntax}[emph={[1]cjk-font}]
        cjk-font = windows|mac|fandol|overleaf
    \end{fdusyntax}
    中文字体设置，具体见表 \ref{tab:cjk-font}。
\end{function}

\begin{table}[!ht]
    \begin{threeparttable}
        \caption{\opt{style/cjk-font} 各选项字体配置}
        \label{tab:cjk-font}
        \begin{tabularx}{\textwidth}{CCCCC}
            \toprule
                                        & \textbf{宋体}   & \textbf{黑体}   & \textbf{仿宋} & \textbf{楷体}   \\
            \midrule
            \opt{windows}/              & （中易）宋体    & （中易）黑体    & （中易）仿宋  & （中易）楷体    \\
            \opt{overleaf}\tnote{a}     & SimSun          & SimHei          & FangSong      & KaiTi           \\
            \midrule
            \multirow{2}*{\opt{mac}}    & （华文）宋体-简 & （华文）黑体-简 & 华文仿宋      & （华文）楷体-简 \\
                                        & Songti SC       & Heiti SC        & STFangsong    & Kaiti SC        \\
            \midrule
            \multirow{2}*{\opt{fandol}} & Fandol 宋体     & Fandol 黑体     & Fandol 仿宋   & Fandol 楷体     \\
                                        & FandolSong      & FandolHei       & FandolFang    & FandolKai       \\
            \bottomrule
        \end{tabularx}
        \vspace*{10pt}
        \begin{tablenotes}
            \item[a] \kvopt{cjk-font}{overleaf} 调用的字体与 \kvopt{cjk-font}{windows} 完全相同，区别只在于 \kvopt{cjk-font}{overleaf} 时，\cls{whu-thesis} 会以文件名方式调用字体。 Overleaf 用户在使用 \kvopt{cjk-font}{overleaf} 时，需要手动在目录中上传字体。
        \end{tablenotes}
    \end{threeparttable}
\end{table}

\opt{style/font} 与 \opt{style/cjk-font} 的默认值会根据操作系统而改变，具体见表 \ref{tab:font-system}。
\begin{table}[!ht]
    \begin{threeparttable}
        \caption{各操作系统下 \opt{style/font} 与 \opt{style/cjk-font} 的默认值}
        \label{tab:font-system}
        \begin{tabularx}{\textwidth}{CCCC}
            \toprule
            系统           & Windows       & MacOS       & 其他         \\
            \midrule
            \opt{font}     & \opt{times}   & \opt{times} & \opt{xits}   \\
            \midrule
            \opt{cjk-font} & \opt{windows} & \opt{mac}   & \opt{fandol} \\
            \bottomrule
        \end{tabularx}
    \end{threeparttable}
\end{table}

\begin{function}{style/graphics-path}
    \begin{fdusyntax}[emph={[1]graphics-path}]
        graphics-path = (*\{\marg{路径}\}*)
    \end{fdusyntax}
    用于指定图片文件路径，每个路径都必须用 "{}" 包起来。
\end{function}

\begin{function}{style/bib-backend}
    \begin{fdusyntax}[emph={[1]bib-backend}]
        bib-backend = (*<(bibtex)|biblatex>*)
    \end{fdusyntax}
    选择参考文献的支持方式。选择 "bibtex" 后，将使用 \BibTeX{} 处理文献，样式由 \pkg{natbib} 宏包负责； 选择 "biblatex" 后，将使用 biber 处理文献，样式则由 \pkg{biblatex} 宏包负责。
\end{function}

\emph{武汉大学要求参考文献遵循 GB/T 7714--2005 规范，但目前 \pkg{biblatex-gb7714} 只支持 GB/T 7714--2015，缺乏对 GB/T 7714--2005 的良好支持，所幸两者差别并不大，但最终效果可能仍无法完全满足格式规范的要求。}

\begin{function}{style/bib-style}
    \begin{fdusyntax}[emph={[1]bib-style}]
        bib-style = author-year|numerical
    \end{fdusyntax}
    设置参考文献样式。\opt{author-year} 和 \opt{numerical} 分别对应国家标准 GB/T 7714--2005 中的著者—出版年制和顺序编码制。\kvopt{type}{doctor} 或 \opt{master} 时默认为 \opt{author-year}，\kvopt{type}{bachelor} 或 \opt{opening} 时默认为 \opt{numerical}。
\end{function}

\begin{function}{style/cite-style}
    \begin{fdusyntax}[emph={[1]bib-style}]
        cite-style = (*<(super)|inline>*)
    \end{fdusyntax}
    设置引用样式，仅在 \kvopt{style/bib-style}{numerical} 时有效。分别表示上标形式与文内形式的引用样式。
\end{function}

\begin{function}{style/list-of-figures}
    \begin{fdusyntax}[emph={[1]list-of-figures}]
        list-of-figures = (*\TFF*)
    \end{fdusyntax}
    设置是否显示图片索引。
\end{function}

\begin{function}{style/list-of-tables}
    \begin{fdusyntax}[emph={[1]list-of-tables}]
        list-of-tables = (*\TFF*)
    \end{fdusyntax}
    设置是否显示表格索引。
\end{function}

\begin{function}{style/fullwidth-stop}
    \begin{fdusyntax}[emph={[1]fullwidth-stop}]
        fullwidth-stop = (*\TFF*)
    \end{fdusyntax}
    选择是否把全角实心句点“．”作为默认的句号形状。这种句号一般用于科技类文章，以避免与下标“$_o$”或“$_0$”混淆。
\end{function}

选择 \kvopt{style/fullwidth-stop}{true} 后，只有\emph{显式的}“。”会被替换为“．”，如果您用宏保存了一些含有“。”的文字，那么在使用宏时，其中的“。”不会被替换为“．”。

\section{宏包依赖}
使用不同编译方式、指定不同选项，会导致宏包依赖情况有所不同。
具体如下：
\begin{itemize}
    \item 在任何情况下，本模板都会\emph{显式}调用以下宏包（或文档类）：
          \begin{itemize}
              \item \pkg{expl3}、\pkg{xparse} 和 \pkg{l3keys2e}，用于构建 \LaTeX3 编程环境 \scite{source3}。它们分属 \pkg{l3kernel} 和 \pkg{l3packages} 宏集。
              \item \cls{ctex文档类}，提供中文排版的通用框架，属于 \CTeX{} 宏集\scite{CTeX}。
              \item \pkg{amsmath}、\pkg{amssymb} 与 \pkg{amsthm}，对 \LaTeX{} 的数学排版功能进行了全面扩展，并提供定理类环境定制功能。属于 \AmSLaTeX{} 套件。
              \item \pkg{mathtools}，是 \pkg{amsmath} 的扩充，修正了 \pkg{amsmath} 的 bug，并提供了更多数学排版功能。
              \item \pkg{ti\emph{k}z}、\pkg{pgfplots}，提供绘图（如圆圈数字）支持。
              \item \pkg{ulem}，提供绘制下划线功能。
              \item \pkg{siunitx}、\pkg{physics}，提供方便的单位、物理符号输入支持。
              \item \pkg{algorithm2e}，用于提供编写算法／伪代码的支持。
              \item \pkg{geometry}，用于调整页面尺寸。
              \item \pkg{fancyhdr}，处理页眉页脚。
              \item \pkg{tocloft}，调整目录样式。
              \item \pkg{subcaption}，提供子题注支持。
              \item \pkg{caption}，用于设置题注格式。
              \item \pkg{graphicx}，提供图形插入的接口。
              \item \pkg{tabularx}，用来创建给定总宽度的表格。
              \item \pkg{longtable}、\pkg{xltabular}，提供长表格（允许跨页的表格）与定宽长表格的支持。
              \item \pkg{booktabs}，提供三线表支持。
              \item \pkg{multirow}、\pkg{makecell}，提供纵向合并、“拆分”单元格功能。
              \item \pkg{diagbox}，用于绘制斜线表头。
              \item \pkg{enumitem}，用于删除列举环境额外的的纵向间距。
              \item \pkg{footmisc}，用于设置脚注序号每面更新。
              \item \pkg{unicode-math}，负责处理 Unicode 编码的 OpenType 数学字体。\cls{whu-thesis} 会调用 Times 风格的 XITS Math 字体。
              \item \pkg{natbib}，提供作者—年份引用格式。
              \item \pkg{hyperref}，提供交叉引用、超链接、电子书签等功能。
          \end{itemize}
    \item 设置 \kvopt{class}{opening} 时，\cls{whu-thesis} 会调用 \cls{ctexart} 文档类，同时会调用 \pkg{needspace}，防止在“指导教师意见”中换页。且在 \kvopt{bib-backend}{bibtex} 时调用 \pkg{tocbibind} 宏包，对参考文献章节编号。其他时候 \cls{whu-thesis} 则会调用 \cls{ctexbook} 文档类。
    \item 使用 \XeLaTeX{} 编译时，\CTeX{} 会调用 \pkg{xeCJK}\scite{xeCJK} 宏包，而使用 \LuaLaTeX{} 编译时，\CTeX{} 会调用 \pkg{luatexja}\scite{LuaTeX-ja} 宏包。不同的编译方式和中文支持方式会在一定程度上影响 \CTeX{} 宏集的行为，如对空格、标点的处理等。一般来说，使用 \XeLaTeX{} 编译时，推荐在中西文间显式地插入一个西文空格，而使用 \LuaLaTeX{} 编译时中西文间不插入空格。博士论文会在外部编译书脊，书脊使用 \LuaTeX-ja 的竖排文档类 \cls{ltjtarticle}。
    \item \opt{draft} 选项开启时，如果使用 \LuaLaTeX{} 编译，会载入 \pkg{lua-visual-debug} 宏包。
    \item \kvopt{style/font}{newtx} 时，会调用 \pkg{newtxtext} 宏包，\kvopt{style/math-font}{newtx} 时，会调用 \pkg{newtxmath} 宏包。
    \item 开启 \kvopt{style/bib-backend}{bibtex} 后，会调用 \pkg{natbib} 宏包，并依赖 \BibTeX{} 程序。参考文献样式由 \pkg{gbt7714} 宏包提供 \scite{natbib,gbt7714}。
    \item 开启 \kvopt{style/bib-backend}{biblatex} 后，会调用 \pkg{biblatex} 宏包，并依赖 \biber{} 程序。参考文献样式由 \pkg{biblatex-gb7714-2015} 宏包提供 \scite{biblatex,biblatex-gb7714-2015}。
\end{itemize}

这里只列出了本模板直接调用的宏包。这些宏包自身的调用情况，此处不再具体展开。如有需要，请参阅相关文档。

\begin{thebibliography}{99}
    \newcommand\urlprefix{\newline\hspace*{\fill}}
    \let\OldUrl=\url
    \renewcommand\url[2][]{{\small\textit{#1}~\OldUrl{#2}}}
    \newcommand\CTANurl[2][]{{\small\textit{#1}~\href{http://mirror.ctan.org/#2}{\ttfamily CTAN://#2}}}
    
    \bibitem{source2e}
    \textsc{Braams J}, \textsc{Carlisle D}, \textsc{Jeffrey A}, et al.
    \newblock \textit{The \LaTeXe{} Sources} [CP/OL].
    \newblock (2020-10-01)
    \urlprefix\url{https://ctan.org/pkg/latex}
    \urlprefix\CTANurl[源代码：]{macros/latex/base/source2e.pdf}
    
    \bibitem{source3}
    \textsc{The \LaTeX3 Project}.
    \newblock \textit{The \LaTeX3 Sources} [CP/OL].
    \newblock (2020-12-07)
    \urlprefix\url{https://ctan.org/pkg/l3kernel}
    \urlprefix\CTANurl[源代码：]{macros/latex/contrib/l3kernel/source3.pdf}
    
    \bibitem{CTeX}
    \textsc{CTEX.ORG}.
    \newblock \textit{\CTeX{} 宏集手册} [EB/OL].
    \newblock version 2.5.6,
    \newblock (2021-03-14)
    \urlprefix\url{https://ctan.org/pkg/ctex}
    \urlprefix\CTANurl[文档及源代码：]{language/chinese/ctex/ctex.pdf}
    
    \bibitem{xeCJK}
    \textsc{CTEX.ORG}.
    \newblock \textit{\pkg{xeCJK} 宏包} [EB/OL].
    \newblock version 3.8.6,
    \newblock (2020-10-19)
    \urlprefix\url{https://ctan.org/pkg/xecjk}
    \urlprefix\CTANurl[文档及源代码：]{macros/xetex/latex/xecjk/xeCJK.pdf}
    
    \bibitem{LuaTeX-ja}
    \LuaTeX-ja プロジェクトチーム.
    \newblock \textit{\LuaTeX-ja パッケージ} [EB/OL].
    \newblock version 2021\-03\-20.0,
    \newblock (2021-03-20)
    \urlprefix\url{https://ctan.org/pkg/luatexja}
    \urlprefix\CTANurl[文档：]{macros/luatex/generic/luatexja/doc/luatexja-ja.pdf}
    
    \bibitem{lshort-zh-cn}
    \textsc{Oetiker T}, \textsc{Partl H}, \textsc{Hyna I}, et al.
    \newblock \textit{一份（不太）简短的 \LaTeXe{} 介绍: 或 112 分钟了解 \LaTeXe{}} [EB/OL].
    \newblock \CTeX{} 开发小组, 译.
    \newblock 原版版本 version 6.2, 中文版本 version 6.02,
    \newblock (2020-08-03)
    \urlprefix\url{https://ctan.org/pkg/lshort-zh-cn}
    \urlprefix\CTANurl[文档：]{info/lshort/chinese/lshort-zh-cn.pdf}
    
    \bibitem{thuthesis}
    清华大学 TUNA 协会.
    \newblock \textit{\textsc{ThuThesis}：清华大学学位论文模板} [EB/OL].
    \newblock version 7.2.1,
    \newblock (2021-03-21)
    \urlprefix\url{https://ctan.org/pkg/thuthesis}
    \urlprefix\CTANurl[文档及源代码：]{macros/latex/contrib/thuthesis/thuthesis.pdf}
    
    \bibitem{fduthesis}
    曾祥东.
    \newblock \textit{fduthesis: 复旦大学论文模板} [EB/OL].
    \newblock version 0.7e,
    \newblock (2020/08/30)
    \urlprefix\url{https://ctan.org/pkg/fduthesis}
    \urlprefix\CTANurl[文档及源代码：]{macros/latex/contrib/fduthesis/fduthesis-code.pdf}
    
    \bibitem{natbib}
    \textsc{Daly P W}.
    \newblock \textit{Natural Sciences Citations and References} [EB/OL].
    \newblock version 8.31b,
    \newblock (2010-09-13)
    \urlprefix\url{https://ctan.org/pkg/natbib}
    \urlprefix\CTANurl[文档及源代码：]{macros/latex/contrib/natbib/natbib.pdf}
    
    \bibitem{gbt7714}
    李泽平（\textsc{Zeping L}）.
    \newblock \textit{GB/T 7714--2015 \BibTeX{} Style} [EB/OL].
    \newblock version 2.1,
    \newblock (2020-12-17)
    \urlprefix\url{https://ctan.org/pkg/gbt7714}
    \urlprefix\CTANurl[文档：]{biblio/bibtex/contrib/gbt7714/gbt7714.pdf}
    
    \bibitem{biblatex}
    \textsc{Lehman P}, \textsc{Kime P}, \textsc{Boruvka A}, et al.
    \newblock \textit{The \pkg{biblatex} Package} [EB/OL].
    \newblock version 3.16,
    \newblock (2020-12-31)
    \urlprefix\url{https://ctan.org/pkg/biblatex}
    \urlprefix\CTANurl[文档：]{macros/latex/contrib/biblatex/doc/biblatex.pdf}
    
    \bibitem{biblatex-gb7714-2015}
    胡振震.
    \newblock \textit{符合 GB/T 7714-2015 标准的 biblatex 参考文献样式} [EB/OL].
    \newblock version 1.0w,
    \newblock (2021-01-19)
    \urlprefix\url{https://ctan.org/pkg/biblatex-gb7714-2015}
    \urlprefix\CTANurl[文档：]{biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf}
\end{thebibliography}

\end{document}